<?php
/**
 * Classe Model do usuario, conectando com o banco de dados.s
 * @author Erick haendel <erickhaendel@gmail.com>
 * @package App.Model
 */

/**
 * Usar componentes do CAKEPHP para a Autorização de paginas.
 */
App::uses('AuthComponent', 'Controller/Component');

Class User extends AppModel {


	/**
	 * Tabela a ser usada pelo model.
	 * @var string
	 */
	public $useTable = 'Users';

	/**
	 * Validações 
	 */
	 public $validate = array(
	 	'email' => array(
	 		'email_unico'=>array(
	 			'rule' => 'isUnique',
                'message' => 'Email cadastrado,tente outro.'
             ),
	 		'email_necessario'=>array(
	 			'rule'=>'notEmpty',
	 			'message'=>'Email necessário.')
        ),
        'username' => array(
	 		'username_unico'=>array(
	 			'rule' => 'isUnique',
                'message' => 'Username cadastrado, tente outro.'
             ),
	 		'username_necessario'=>array(
	 			'rule'=>'notEmpty',
	 			'message'=>'Username necessário.')
        ),
        'password' => array(
             'rule'    => array('between', 5, 15),
               'message' => 'Senha deve ter entre 4 e 16 caracteres.'
        ),
    );

	/**
	 * Metodo chamado antes de salvar a informação no banco,no caso de a propriedade 
	 * for 'password' essa informação será criptografada.
	 * @param  array  	$options 
	 * @return Bollean	Retorna true , afirmando que foi criptografo a informação.
	 */
	public function beforeSave($options = array()) {
	    if (isset($this->data[$this->alias]['password'])) {
	        $this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['password']);
	    }
	    return true;
	}

	public function validPassword($id, $password) {
		# obs. falta a criptogrfia do password para comparar com a pass do banco
		$pass = $this->query("SELECT password FROM users WHERE id = " . $id . ";");
        $pass = $pass[0]['users']['password'];
		$password = AuthComponent::password($password);
		if($pass == $password) {
			return true;
		}
		return false;
	}
    
    public function countFollowing($id){
        $sql ="SELECT COUNT(users_follow_users.follower_user_id) AS fallow FROM users_follow_users
WHERE users_follow_users.following_user_id = $id;";
        $result = $this->query($sql);
        return $result[0][0]['fallow'];
    }
    
    public function saveFollowing($id_user,$id_following){
        $sql = "INSERT INTO users_follow_users VALUES ($id_user , $id_following) ";
        $this->query($sql);
    }
    
    public function checkFollowing($id_user,$id_following){
        $sql = "SELECT * FROM users_follow_users WHERE 	
                    follower_user_id = $id_user AND 	
                    following_user_id = $id_following";
        $result = $this->query($sql);
        if(empty($result)){
            return false;
        }
        else{
            return true;
        }
    }
    



}